package com.bzkj.basicinfo.service.inventory;

import com.bzkj.basicinfo.domain.inventory.InventoryChangeRecord;
import com.bzkj.basicinfo.domain.inventory.SphwphRecord;
import com.bzkj.basicinfo.domain.inventory.dto.InventoryChangeQueryDto;
import com.bzkj.basicinfo.domain.inventory.vo.DrugSummaryVo;
import com.bzkj.basicinfo.domain.inventory.vo.HuoweiSummaryVo;
import com.bzkj.basicinfo.domain.inventory.vo.InventoryStatusVo;
import com.bzkj.common.core.page.TableDataInfo;

import java.util.List;

/**
 * 库存变更记录Service接口
 * 
 * @author system
 * @date 2025-08-05
 */
public interface InventoryChangeService {
    
    /**
     * 查询货位汇总信息（默认展示sphwph所有不为0的记录状态）
     *
     * @param queryDto 查询条件
     * @return 货位汇总信息列表
     */
    List<HuoweiSummaryVo> selectHuoweiSummary(InventoryChangeQueryDto queryDto);

    /**
     * 查询指定货位下的商品汇总信息
     *
     * @param queryDto 查询条件
     * @return 商品汇总信息列表
     */
    List<DrugSummaryVo> selectDrugSummary(InventoryChangeQueryDto queryDto);

    /**
     * 查询库存变更记录详情
     *
     * @param queryDto 查询条件
     * @return 库存变更记录列表
     */
    List<InventoryChangeRecord> selectInventoryChangeList(InventoryChangeQueryDto queryDto);
    
    /**
     * 获取库存状态详细列表（默认展示sphwph所有不为0的记录及其状态）
     *
     * @param queryDto 查询条件
     * @return 库存状态详细列表
     */
    List<InventoryStatusVo> selectInventoryStatusList(InventoryChangeQueryDto queryDto);

    /**
     * 根据盘点号分析盘点异常情况
     *
     * @param inventoryId 盘点号
     * @param queryDto 查询条件
     * @return 货位汇总信息列表（包含异常统计）
     */
    List<HuoweiSummaryVo> analyzeInventoryByInventoryId(String inventoryId, InventoryChangeQueryDto queryDto);

    /**
     * 查询sphwph表中shl不为0的记录（从库）
     *
     * @return sphwph记录列表
     */
    List<SphwphRecord> selectSphwphNonZeroRecords();

}
